A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices within the network referred to as routers maintain tables of information that describe routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming data packet, the router examines destination information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing table.
The physical connection between devices within the network is generally referred to as a link. A router uses interface cards (IFCs) for receiving and sending data packets via network links. These IFCs are installed in ports known as interfaces and are configured using interface configurations.
Generally, a router may maintain state information. For example, a router may maintain state information representing the current the state of the interface between that router and the network. Such state information may include information representing the state of one or more IFCs, such as the current configuration of one or more IFCs. A router may also, for example, maintain state information representing the state of one or more forwarding engines, one or more routing engines, or other resources within the router.
In particular, a process operating within a router, such as an operating system, may maintain the state information and communicate changes to state information to various other processes within the router. These other processes are sometimes referred to as “consumers,” because they are the consumers of the state information maintained by the operating system. These consumers use state information when performing their various functions.
As the complexity of conventional networks has increased in recent years, management of the state information within a router or other network device has likewise become a significant challenge. Some existing methods for managing state information involve caching the information within the operating system, and issuing state change notifications to the software modules within the router. In response, the software modules retrieve the state information from the operating system.
These existing methods may be adequate if the rate of state change is relatively low. When the rate of state change increases, however, the rate of generation of state change messages may exceed the capacity of the consumers to receive and process the state information. In addition, the generation of state change messages may exceed the capacity of the communication channel between the sender and the consumer to carry messages, and may exceed the capacity of the sender to store messages. Thus, as the rate of state change within the computing network increases, these existing methods consume an increasing amount of device or network increases, these existing methods consume an increasing amount of device or network resources.